pythonのFlaskでモジュール分割を行う方法を調べるとBlueprintを使うことがわかりました。
また、分割したモジュールでMariaDBへの接続も行いたく色々調べた結果、with app.app_context():内に分割側で使いたい設定をcurrent_appに設定することで動きました。
調べると様々な情報が出てくるのですが、なかなかしっくり動かなかったので、同じように困っている方は以下のような流れで書いてみてください。
<使い方>※Blueprintとcurrent_appに必要なところだけピックアップしてます。
main.py
from flask import Flask, current_app#他モジュール(.py)のインポート
from sub import sub_api #追加モジュール(sub.py)app = Flask(__name__)with app.app_context():current_app.config[‘dbconfig’] = { ‘host’: ‘127.0.0.1’,‘user’: ‘XXXXXX’,‘password’: ‘XXXXXX’,‘database’: ‘XXXXXX’ }app.register_blueprint(sub_app)@app.route(‘/testmain’)def testmain_page() -> str:return render_template(‘testmain.html’)
sub.py
from flask import Flask, Blueprint, current_app
#Blueprintでモジュールの登録sub_api = Blueprint(‘sub’, __name__) #以降sub_api をappと同様に使用@sub_api.route(‘/testsub’)def testsub_page() -> str:return render_template(‘testsub.html’)@sub_api.route(‘/testsub2’)def testsub2() -> str:try:with UseDatabase(current_app.config[‘dbconfig’]) as cursor: # main.pyで設定したcurrent_appを使用_SQL = “””select count(*) from test_tbl”””

コメント